home *** CD-ROM | disk | FTP | other *** search
Wrap
////// //script for titan king-of-the-hill // function setDefaultMissionOptions() { $server::TeamPlay = False; // for DM_ games } //-------------------------------------------------------- // start clean (just because) function onMissionStart() { $king=""; $victor="No one"; initGlobalVars(); } ///---------------------------------------------------------- ///Chat instructions to new arrivals function player::onAdd(%this) { chat(%this,0,"-Welcome to Death Valley. (King-of-the-Hill)"); chat(%this,0,"-Contact the landing pad between the turrets to become king."); chat(%this,0,"-As king, score more points per kill."); chat(%this,0,"-Use the turrets and battlements to your advantage."); chat(%this,0,"-Good Luck. You're probably going to need it."); if($server::TeamPlay != True) { setTeam(%this, red); } } //---------------------------------------------------------------- //Initialize Turrets function redturret::turret::onAdd(%this) { $turret1=%this; // echo("i am a turret",%this); resetKing(); } function purpleturret::turret::onAdd(%this) { $turret2=%this; } function yellowturret::turret::onAdd(%this) { $turret3=%this; } function blueturret::turret::onAdd(%this) { $turret4=%this; } //---------------------------------------------------------- function resetKing() { setVehicleSpecialIdentity($king,false,"Purple"); dataRelease($king,"KingFlag"); $oldKing=$king; $king=""; if(!($server::TeamPlay)) { setTurretOwner($turret1,0); setTurretOwner($turret2,0); setTurretOwner($turret3,0); setTurretOwner($turret4,0); } else { setTeam($turret1,"Red"); setTeam($turret2,"Purple"); setTeam($turret3,"Yellow"); setTeam($turret4,"Blue"); } // echo("the turrets are owned by:",$king,$kingsTeam); } //----------------------------------------------------------- //make the turrets not fire at the king function throne::trigger::onContact(%this,%object) { //is the person on the throne already king? if ($king==%object) {return;} //does the team own this turret if($server::TeamPlay) { if (getTeam($king)==getTeam(%object)) { //denyTeam(); return; } } isKingAway(); if ($king=="") { //echo("noone is king"); $king=%object; if($server::TeamPlay){$kingsTeam=getTeam($king);} //give the new king a little lovin for making it thru the turrets if his team was last in charge if ((!($server::TeamPlay)) && $king!=$oldKing) { chat(%object,0,"You receive repair for becoming king."); healObject($king,10000); reloadObject($king,10000); } wall(getName($king),"is king."); setVehicleSpecialIdentity($king,True,"Purple"); dataStore($king,"KingFlag","True"); kingPoint(); if($king!=$oldKing) { dataStore(playerManager::vehicleIdToPlayerNum($king),"KingAtEnd",1+dataRetrieve(playerManager::vehicleIdToPlayerNum($king),"KingAtEnd")); } if($server::TeamPlay) { wall($kingsTeam,"has the throne."); } // echo("The turrets sb owned by",$king,$kingsTeam); //set turret owner to new king if(!($server::TeamPlay)) { setTurretOwner($turret1, $king); setTurretOwner($turret2, $king); setTurretOwner($turret3, $king); setTurretOwner($turret4, $king); } if($server::TeamPlay) { setTeam($turret1,$kingsTeam); setTeam($turret2,$kingsTeam); setTeam($turret3,$kingsTeam); setTeam($turret4,$kingsTeam); } return; } if(!($server::TeamPlay)){chat(%object,0,"You can not be king if the king is alive and near.");} damageObject(%this,50); } function isKingAway() { //how far away is the king %kingAway=getDistance($king,"MissionGroup\\Scenario\\Castle\\throne"); // echo(%kingAway,"=distance from king to throne."); if (%kingAway>=300||%kingAway==0) { resetKing(); if (%kingAway!=0) {wallDim("The king is away from the throne. He has been dethroned.");} } } //---------------------------------------------------------------- //Scoring function vehicle::onDestroyed(%destroyed,%destroyer) { //if the king is destroyed, he loses his throne if (%destroyed==$king) { //special case where king kills self if (%destroyed==$king&&%destroyer==$king) { wallDim("A suicidal king. The throne is empty!"); resetKing(); return; } //special case where the king is killed by own turrets if (%destroyer==$turret1||%destroyer==$turret2||%destroyer==$turret3||%destroyer==$turret4) { wallDim("The king was killed by his turrets and loses points!"); dataStore(playerManager::vehicleIdToPlayerNum(%destroyed),"kingKills",dataRetrieve(playerManager::vehicleIdToPlayerNum(%destroyed),"kingKills")-5); resetKing(); return; } resetKing(); wall(getName(%destroyer),"has killed the king."); if (!($server::TeamPlay)){dataStore(playerManager::vehicleIdToPlayerNum(%destroyer),"kingKills",1+dataRetrieve(playerManager::vehicleIdToPlayerNum(%destroyer),"kingKills"));} else if(getTeam(%destroyer)!=getTeam($king)) { dataStore(playerManager::vehicleIdToPlayerNum(%destroyer),"kingKills",1+dataRetrieve(playerManager::vehicleIdToPlayerNum(%destroyer),"kingKills")); } } if (%destroyer==$turret1||%destroyer==$turret2||%destroyer==$turret3||%destroyer==$turret4) { if ($king=="") {return;} wallDim("Kill for the kings turrets."); dataStore(playerManager::vehicleIdToPlayerNum($king),"KillsAsKing",1+dataRetrieve(playerManager::vehicleIdToPlayerNum($king),"KillsAsKing")); return; } if (%destroyer==$king) { if (!($server::TeamPlay)){dataStore(playerManager::vehicleIdToPlayerNum(%destroyer),"KillsAsKing",1+dataRetrieve(playerManager::vehicleIdToPlayerNum(%destroyer),"KillsAsKing"));} if ($server::TeamPlay) { if (getTeam(%destroyed)!=getTeam($king)) { dataStore(playerManager::vehicleIdToPlayerNum(%destroyer),"KillsAsKing",1+dataRetrieve(playerManager::vehicleIdToPlayerNum(%destroyer),"KillsAsKing")); } } } wallDim(strcat(getName(%destroyer)," killed ",getName(%destroyed),".")); } //------------------------------------------------------------------------ //end: find out who wins function onMissionEnd() { // points for ending as king if (playerManager::getPlayerCount()<=0){return;} isKingAway(); dataStore(playerManager::vehicleIdToPlayerNum($king),"KingAtEnd",10+dataRetrieve(playerManager::vehicleIdToPlayerNum($king),"KingAtEnd")); %winner=getName($king); if ($king=="") {%winner="No one";} wallDim(%winner,"gets an extra 10 points for finishing as King."); if ($server::TeamPlay) {getHITeamScore();} else {getHIPlayerScore();} wall($victor,"is victorious!"); } //------------------------------------------------------------------------ function kingPoint() { isKingAway(); if ($king==""){return;} if (dataRetrieve($king,"KingFlag")!="True"){return;} // dataStore(playerManager::vehicleIdToPlayerNum(%destroyer),"kingKills",1+dataRetrieve(playerManager::vehicleIdToPlayerNum(%destroyer),"kingKills")); // chat($king,0,"KING POINT."); kingPointPassenger(); } function kingPointPassenger() { %order="kingPoint();"; schedule(%order,20); } //Scoreing Stuff function getPlayerScore(%player) { return (getKingAtEnd(%player)+getKills(%player)+getKingKills(%player)+(getKillsAsKing(%player)*2)-getDeaths(%player)); } function getKingKills(%player) { %kingKills=dataRetrieve(%player,"kingKills"); if (%kingKills=="") {%kingKills=0;} return %kingKills; } function getKillsAsKing(%player) { %turretKills=dataRetrieve(%player,"KillsAsKing"); if (%turretKills=="") {%turretKills=0;} return %turretKills; } function getKingAtEnd(%player) { %KingPoints=dataRetrieve(%player,"KingAtEnd"); if (%KingPoints=="") {%KingPoints=0;} return %KingPoints; } function getKOTHTeamScore(%team) { //This is a cannonball. Start team score at 0 and iterate thru //all players add their score to the score of the team they are on and return it // echo("kothteamscore called"); %score=0; %playerScore=0; for (%i=0; %i<playerManager::getPlayerCount(); %i=%i+1) { %player=playerManager::getPlayerNum(%i); %playerScore=getPlayerScore(%player); if (%team==getTeam(%player)) { %score=%score+%playerScore; //echo("Team Score: ",%score); } } return %score; } function teamColorForScore(%teamId) { %team=getTeamNameFromTeamId(%teamId); %score=getKOTHTeamScore(%team); return %score; } //----------------------------------------------------------------------- /// find highest player or team scores function getHITeamScore() { for (%i=0; %i<playerManager::getPlayerCount(); %i=%i+1) { %HITeamScore = 0; %tS = 0; %teamPlayer = playerManager::getPlayerNum(%i); %tS = getKOTHTeamScore(getTeam(%teamPlayer)); //echo(%tS); if (%tS > %HITeamScore) { %HITeamScore = %tS; //echo(%tS, " ", %HITeamScore); $victor = getTeam(%teamPlayer); //echo($victor); } } return $victor; } function getHIplayerScore() { // echo ("hi player score called"); %score=0; %playerScore=0; %HIPlayerScore=0; for (%i=0; %i<playerManager::getPlayerCount(); %i=%i+1) { %player=playerManager::getPlayerNum(%i); %playerScore=getPlayerScore(%player); // echo("player is ",%player,getName(%player)); if (%playerScore>=%HIPlayerScore) { //echo(%playerScore, "is higher than",%HIPlayerScore); %HIPlayerScore=%playerScore; //echo("so now high score is",%HIPlayerScore); $victor=getName(%player); } } return $victor; } // Scoreboard function initScoreBoard() { deleteVariables("$ScoreBoard::PlayerColumn*"); deleteVariables("$ScoreBoard::TeamColumn*"); if (!($server::TeamPlay)) { //Player Column Headings $ScoreBoard::PlayerColumnHeader1="SCORE"; $ScoreBoard::PlayerColumnHeader2="KILLS AS KING"; $ScoreBoard::PlayerColumnHeader3="KING KILLS"; $ScoreBoard::PlayerColumnHeader4="KILLS"; $ScoreBoard::PlayerColumnHeader5="DEATHS"; $ScoreBoard::PlayerColumnHeader6="PING"; //Player Column Functions $ScoreBoard::PlayerColumnFunction1="getPlayerScore"; $ScoreBoard::PlayerColumnFunction2="getKillsAsKing"; $ScoreBoard::PlayerColumnFunction3="getKingKills"; $ScoreBoard::PlayerColumnFunction4="getKills"; $ScoreBoard::PlayerColumnFunction5="getDeaths"; $ScoreBoard::PlayerColumnFunction6="getPing"; } else { //Player Column Headings $ScoreBoard::PlayerColumnHeader1="TEAM"; $ScoreBoard::PlayerColumnHeader2="SCORE"; $ScoreBoard::PlayerColumnHeader3="KILLS AS KING"; $ScoreBoard::PlayerColumnHeader4="KING KILLS"; $ScoreBoard::PlayerColumnHeader5="KILLS"; $ScoreBoard::PlayerColumnHeader6="DEATHS"; $ScoreBoard::PlayerColumnHeader7="PING"; //Player Column Functions $ScoreBoard::PlayerColumnFunction1="getTeam"; $ScoreBoard::PlayerColumnFunction2="getPlayerScore"; $ScoreBoard::PlayerColumnFunction3="getKillsAsKing"; $ScoreBoard::PlayerColumnFunction4="getKingKills"; $ScoreBoard::PlayerColumnFunction5="getKills"; $ScoreBoard::PlayerColumnFunction6="getDeaths"; $ScoreBoard::PlayerColumnFunction7="getPing"; } //Team Column Headings $ScoreBoard::TeamColumnHeader1="SCORE"; //Team Column Headings $ScoreBoard::TeamColumnFunction1="teamColorForScore"; serverInitScoreBoard(); } //------------------------------------------------------------- function initGlobalVars() { for (%i=0; %i<playerManager::getPlayerCount(); %i=%i+1) { %player=playerManager::getPlayerNum(%i); dataRelease(%player,"KingAtEnd"); dataRelease(%player,"kingKills"); dataRelease(%player,"KillsAsKing"); } }